/*
 * BuilderEscenarioYAML.h
 *
 *  Created on: Sep 14, 2012
 *      Author: Hernan
 */

#ifndef BUILDERESCENARIOYAML_H_
#define BUILDERESCENARIOYAML_H_
#include "../dominio/Personaje.h"
#include "../dominio/Plataforma.h"
#include "../dominio/Pantalla.h"
#include "../dominio/Escalera.h"
#include "../dominio/Nivel.h"
#include "../Dibujante.h"
#include "../dominio/Juego.h"
#include "../dominio/Nivel.h"
#include "../dominio/Animacion.h"
#include "../logger/Logger.h"
#include "ArbolSintactico.h"
#include "../dominio/Canieria.h"
#include <stdlib.h>
#include <map>


class BuilderEscenarioYAML  {
private:
	Nivel* nivel;
	Juego* juego;
	Logger* logger;

	ArbolSintactico arbolsintactico;

	list<string> separarString(string s);

	list<TipoPersonaje*> listaTipoPersonaje;
	list<Personaje*> listaPersonajes;
	list<Plataforma*> listaPlataformas;
	list<Escalera*> listaEscaleras;
	Pantalla* pantalla;
	map<string, string> parametros;
	list<Textura*> listaTexturas;
	list<Canieria*> listaCanios;

public:
	BuilderEscenarioYAML(string path_escenario);

	bool crearPersonajes();

	bool crearTiposPersonajes();

	void crearEstructuras(string estructura);

	void crearEscaleras();

	void crearPlataformas();

	void crearCanierias();

	void inicializarDatosGraficos();

	bool is_number(string s);

	Textura* getTextura(string path_textura);

	list<Personaje*> getPersonajes();

	list<Escalera*> getEscaleras();

	list<Plataforma*> getPlataformas();

	list<Canieria*> getCanierias();

	string getPathFondo();

	Pantalla* getPantalla();

	map<string,string>& getParametros();

	list< Textura*> getTexturas();

	virtual ~BuilderEscenarioYAML();

	Nivel* getNivel();

	void crearNivel();

	void crearJuego();

	Juego*  getJuego();

	list<TipoPersonaje> getListaTipoPersonaje();

	list<Textura> getListaTexturas();

	void crear(Nodo* nodo, Personaje*& personaje);

	/**** redefinir metodo, para que se puedan manipular varios niveles */

	int getPisoNivel();

	void inicializarProtagonista(string nombreProtagonista, int coordx, int coordy);

};

#endif /* BUILDERESCENARIOYAML_H_ */
